package com.chu.junit;
import org.junit.Test;
public class MyTest {

    //冒泡排序源码&测试
    @Test
    public void bubbleSort() {
        int[] array = {21, 34, 12, 56, 78, 27};
        for (int i = 0; i < array.length; i++) {
            for (int j = 0; j < array.length - i - 1; j++) {
                if (array[j] > array[j + 1]) {
                    int temp = array[j];
                    array[j] = array[j + 1];
                    array[j + 1] = temp;
                }
            }
        }
        for (int ii : array) {
            System.out.print(ii + "\t");
        }
    }





    //选择排序源码&测试
    @Test
    public void selectSort(){
        int[] array = {6,7,2,5,3,1};
        for(int i=0;i<array.length;i++){
            for (int j=i+1;j<array.length;j++){
                if(array[i]>array[j]){
                    int temp = array[i];
                    array[i] = array[j];
                    array[j] = temp;
                }
            }
        }
        for (int i : array) {
            System.out.print(i+"\t");
        }
    }





    //斐波那契数列第n项的值从0开始&源码
    public int getFibonacciByZero(int n){
        if(n<0){
            return 0;
        } else if(n==0||n==1){
            return n;
        }else{
            return getFibonacciByZero(n-1)+getFibonacciByZero(n-2);
        }
    }
    //斐波那契数列第n项的值从0开始&测试
    @Test
    public void getFibonacciByZeroTest(){
        System.out.println(getFibonacciByZero(6));
    }





    //斐波那契数列计算第n项的值从1开始&源码
    public int getFibonacciByOne(int n){
        if(n<0){
            return 0;
        }if(n==0){
            return 0;
        }if(n==1){
            return 1;
        }return getFibonacciByOne(n-1)+getFibonacciByOne(n-2);
    }
    //斐波那契数列计算第n项的值从1开始&测试
    @Test
    public void getFibonacciByOneTest(){
        System.out.println(getFibonacciByOne(5));
    }





    //斐波那契数列&&计算前n项的和源码
    public int getSumFibonacci(int n){
        int sum = 0;
        for (int i=1;i<=n;i++){
            sum += getFibonacciByOne(i);
        }
        return sum;
    }
    //斐波那契数列&&计算前n项的和测试
    @Test
    public void sumFibonacci(){
        System.out.println(getSumFibonacci(5));
    }





    //阶乘&源码
    public static int getFactorial(int n){
        if(n==1){
            return 1;
        }else{
            return n*getFactorial(n-1);
        }
    }
    @Test//阶乘&测试
    public void factorial(){
        System.out.println(getFactorial(6));
    }


}
